Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

61
Views
C# | Cree una cadena json a partir de campos de clase estática con valores

Necesito un método que pueda recorrer todas las propiedades estáticas en una clase estática y combinarlas en una cadena con sintaxis json , donde el nombre de la clave sería igual al nombre de la propiedad y el valor de la clave sería el valor de la propiedad.

Entonces el resultado sería una cadena con valor:

 { "StaticPropertyName_string": "string_value_of_this_property", "StaticPropertyName_int": 34 }

Tengo un método de trabajo que hace lo contrario con éxito: toma un json y asigna datos a campos estáticos. Pero no puedo entender cómo hacerlo al revés.

 public static void MapProfileToJson(JToken source) //// source = plain json string { var destinationProperties = typeof(Fields) .GetProperties(BindingFlags.Public | BindingFlags.Static); foreach (JProperty prop in source) { var destinationProp = destinationProperties .SingleOrDefault(p => p.Name.Equals(prop.Name, StringComparison.OrdinalIgnoreCase)); var value = ((JValue)prop.Value).Value; if (typeof(Fields).GetProperty(prop.Name) != null) destinationProp.SetValue(null, Convert.ChangeType(value, destinationProp.PropertyType)); else Console.WriteLine("(!) property \"" + prop.Name + "\" is not found in class... skip"); } }

Ejemplo de clase estática:

 public static class Fields { public static bool BoolField { get; set; } public static string StringField { get; set; } public static int IntField { get; set; } public static double DoubleField { get; set; } }

ps Los pares de valores clave guardados en una cadena, podrían envolverse al final como

 ResultString = "{ " + resultString + " }";

C# .NET 4.7.2 (aplicación de consola)

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Como han dicho otros, una clase static no es un buen diseño aquí.

Sin embargo, es posible volver a asignarlo a JSON con una simple reflexión:

 public static JObject MapStaticClassToJson(Type staticClassToMap) { var result = new JObject(); var properties = staticClassToMap.GetProperties(BindingFlags.Public | BindingFlags.Static); foreach (PropertyInfo prop in properties) { result.Add(new JProperty(prop.Name, prop.GetValue(null, null))); } return result; }
over 4 years ago · Santiago Trujillo Report

0

Creo que sería bueno tener un código simple para asignar propiedades json a las propiedades de una clase estática también. Creé este código usando la respuesta de @RichardDeeming

 public static void MapStaticClassFromJson(string json, Type staticClassToMap) { var jsonObject = JObject.Parse(json); var properties = staticClassToMap.GetProperties(BindingFlags.Public | BindingFlags.Static); foreach (PropertyInfo prop in properties) prop.SetValue(null, Convert.ChangeType(jsonObject[prop.Name], prop.PropertyType, CultureInfo.CurrentCulture), null); }

prueba

 MapStaticClassFromJson(json,typeof(Data)); Console.WriteLine(Data.StaticPropertyName_int); Console.WriteLine(Data.StaticPropertyName_string);

resultado

 34 string_value_of_this_property
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!